Determining Simulation Fidelity in a Self-Optimized Simulation of a Complex System

ABSTRACT

Mechanisms are provided for controlling a fidelity of a simulation of a computer system. A model of the system is received that has a plurality of components. A representation of the plurality of individual components of the system is generated. A component is assigned to be a fidelity center having a highest possible associated fidelity value. Fidelity values are assigned to each other component in the plurality of individual components based on an affinity of the other component to the fidelity center. The system is simulated based on assigned fidelity values to the components in the plurality of individual components.

BACKGROUND

The present application relates generally to an improved data processingapparatus and method and more specifically to mechanisms for determiningsimulation fidelity in a self-optimized simulation of a complex system,such as a computer system for example.

As today's computing systems become larger and more complex to meet theincreased demands for computing resources, simulation of such computersystems has become more important. Such simulation allows individuals toobtain information regarding the operational characteristics of thecomputing system that may assist individuals in determining how toconfigure the system to achieve optimal performance as well as addressperformance issues in the computing system. This software simulation ofcomplex computer systems has become a critical part of the developmentprocess for any large system.

Users of such software simulations of complex computer systems typicallymust make an explicit and manual determination of a tradeoff betweensimulation speed, or performance, and simulation accuracy, or“fidelity”, for a given complex computer system. “Fidelity” is theaccuracy of the simulation compared to the real world system beingmodeled. Performance is the amount of time it takes to complete thesimulation.

Generally, high fidelity simulation models have an adverse impact onperformance of the simulation. That is highly accurate or high fidelitysimulation models typically take a relatively longer amount of time tocomplete the simulation whereas less accurate or lower fidelitysimulation models take a relatively shorter amount of time to completethe simulation. Sometimes greater fidelity is desirable and other timesgreater performance is desirable. It is left to the simulationadministrators to choose the appropriate models and configure them toachieve the overall desired performance and fidelity.

SUMMARY

In one illustrative embodiment, a method, in a data processing system,is provided for controlling a fidelity of a simulation of a system. Themethod comprises receiving a model of the system. The model of thesystem comprises a plurality individual components of the system. Themethod further comprises generating a representation of the plurality ofindividual components of the system. In addition, the method comprisesassigning a component in the plurality of individual components to be afidelity center. The fidelity center has a highest possible associatedfidelity value. The method also comprises assigning a fidelity value toeach other component in the plurality of individual components based onan affinity of the other component to the fidelity center. Moreover, themethod comprises simulating the system based on assigned fidelity valuesto the components in the plurality of individual components.

In another illustrative embodiment, a method, in a data processingsystem, for controlling a fidelity of a simulation of a system isprovided that comprises receiving the model of the system, where themodel of the system comprises a plurality of individual components ofthe system, and assigning fidelity values to models of the individualcomponents of the system. The method further comprises executing asimulation of the system using the model of the system and the models ofthe individual components of the system. Moreover, the method comprisesdynamically adjusting fidelity values of one or more of the models ofthe individual components of the system during the execution of thesimulation.

In yet another illustrative embodiment, a method, in a data processingsystem, for controlling a fidelity of a simulation of a system isprovided that comprises receiving a model of the system, where the modelof the system comprises a plurality individual components of the system,and assigning fidelity values to models of the individual components ofthe system. The method further comprises executing a simulation of thesystem using the model of the system and the models of the individualcomponents of the system. The simulation comprises a plurality oftransactions targeting a receiver component. The method also comprisesmaintaining a history of mismatches between a fidelity value associatedwith the receiver component and required fidelity values of theplurality of transactions targeting the receiver component. Moreover,the method comprises predicting a fidelity value to be assigned to thereceiver component based on the history of mismatches. In addition, themethod comprises adjusting a fidelity value of the receiver componentbased on results of predicting the fidelity value to be assigned to thereceiver component.

In other illustrative embodiments, a computer program product comprisinga computer useable or readable medium having a computer readable programis provided. The computer readable program, when executed on a computingdevice, causes the computing device to perform various ones, andcombinations of, the operations outlined above with regard to the methodillustrative embodiments.

In yet another illustrative embodiment, a system/apparatus is provided.The system/apparatus may comprise one or more processors and a memorycoupled to the one or more processors. The memory may compriseinstructions which, when executed by the one or more processors, causethe one or more processors to perform various ones, and combinations of,the operations outlined above with regard to the method illustrativeembodiments.

These and other features and advantages of the present invention will bedescribed in, or will become apparent to those of ordinary skill in theart in view of, the following detailed description of the exampleembodiments of the present invention.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The invention, as well as a preferred mode of use and further objectivesand advantages thereof, will best be understood by reference to thefollowing detailed description of illustrative embodiments when read inconjunction with the accompanying drawings, wherein:

FIG. 1 is an example diagram of a distributed data processing system inwhich aspects of the illustrative embodiments may be implemented;

FIG. 2 is a block diagram of an example data processing system is shownin which aspects of the illustrative embodiments may be implemented;

FIG. 3A illustrates an example block diagram of a computing system inaccordance with one illustrative embodiment;

FIG. 3B is an example diagram of a nodal mesh representation of thecomputer system shown in FIG. 3A which may be used as a basis forassigning fidelity values in accordance with one illustrativeembodiment;

FIG. 3C illustrates one example way in which fidelity values may beassigned to nodes in nodal mesh in accordance with one illustrativeembodiment;

FIG. 3D is an example of a mapping of fidelity values corresponding tothe assignment shown in FIG. 3C, in accordance with one illustrativeembodiment;

FIG. 4 is an example block diagram of the primary operational componentsof a simulation engine in accordance with one illustrative embodiment;

FIG. 5 is a flowchart outlining an example operation for performing thisfidelity assignment in accordance with one illustrative embodiment;

FIG. 6 is an example diagram to illustrate the transaction centricmethodology for dynamically adjusting the fidelity value of a model of acomponent in accordance with one illustrative embodiment;

FIG. 7 is a flowchart outlining an example operation of a sendercomponent when using the transaction centric methodology for dynamicadjustment of fidelity values in accordance with one illustrativeembodiment;

FIG. 8 is a flowchart outlining an example operation of a receivercomponent when using the transaction centric methodology for dynamicadjustment of fidelity values in accordance with one illustrativeembodiment;

FIG. 9 is a flowchart of an operation of a activity centric methodologyfor dynamically updating fidelity settings of a model of a component ina simulation of a computer system in accordance with one illustrativeembodiment;

FIG. 10 is an example timeline view of checkpoints during an examplesimulation in accordance with one illustrative embodiment;

FIG. 11 is a flowchart outlining an operation for performing acorrective methodology for dynamically adjusting validity values ofmodels of components in accordance with one illustrative embodiment; and

FIG. 12 is a flowchart outlining an example operation for using fidelityprediction to adjust the fidelity of a model of a component inaccordance with one illustrative embodiment.

DETAILED DESCRIPTION

The illustrative embodiments provide a mechanism for determiningsimulation fidelity in a self-optimized simulation of a complex system,such as a computer system for example. That is, the illustrativeembodiments provide mechanisms for assigning fidelity measures to eachof the components of a simulation model for a computer system. In thisway, fidelity measures may be balanced across the simulation model so asto achieve the desired fidelity for each of the individual portions ofthe simulation model and the simulation model as a whole, whileproviding a highest possible performance of the simulation model as awhole. The fidelity of the simulation model is not simply assignablefrom a whole simulation model approach, but rather can be customized onan individual simulation model component basis.

The illustrative embodiments further provide mechanisms for determininghow to assign fidelity measures to each of the components of asimulation model so as to achieve the most desirable balance betweenperformance and fidelity. At one extreme, all the components of thesimulation model may be run at the slowest performance level with thehighest fidelity, or at the other extreme may be run at a highestperformance level with a lowest fidelity. Either of these extremes,however, will not suffice in achieving the optimum performance of thesimulation model.

The mechanisms of the illustrative embodiments use a component centricmethodology for determining the fidelities of components of a simulationsystem. The component centric methodology provides a systematic way ofidentifying the fidelity level of every component in the simulationmodel so as to achieve a maximum performance while maintaining therequired accuracy, or “fidelity.”

With the component centric methodology, fidelities are assigned tocomponents of the simulation model based on their affinity to “fidelitycenters.” The fidelity centers are components in the simulated system,i.e. the simulation model, which are determined to need to run at ahighest fidelity setting. These are components that have the mostrelative importance to the outcome of the overall simulation at themoment of evaluation. All other components in the simulated system willrun at lower fidelities as their affinities to the fidelity centersdecreases. That is, as the logical or physical affinity between acomponent and a fidelity center increases, the fidelity of the componentdecreases. This methodology for determining component fidelity allowssome designated components to satisfy requirements of higher accuracy,or fidelity, while components with less affinity to these fidelitycenters will sacrifice accuracy for increased performance of thesimulation. This tradeoff is acceptable because it is assumed that asthe affinity decreases, the particular component has a lower impact onthe overall accuracy of the simulation model.

In addition to the above, the mechanisms of the illustrative embodimentsfurther provide logic and functionality for dynamically determining andchanging fidelity values, or levels, as a simulation of the systemexecutes. In this way, the simulation may be fine tuned so as to achievea highest possible performance while maintaining a required level offidelity or accuracy. This dynamic determination and changing offidelity values may be achieved in a number of different ways includingusing a transaction centric methodology, an activity centricmethodology, and/or a correction methodology. With the transactioncentric methodology, transactions are guaranteed to be handled by amodel have a required fidelity value, however the component of thecomputer system originating the transaction must know what level offidelity the transaction requires. With the activity centricmethodology, components may have their performance dynamically increasedwhen the component's activity starts to wane, i.e. as the componentbecomes less active during the simulation, the fidelity level requiredfrom the simulation of the component is less and as a result, theperformance of the overall simulation is increased. With the correctionmethodology, the fidelity of a given component is predicted bycheckpointing and selecting a lower fidelity value for a given model,detecting a fidelity mismatches if any, and restoring the model of thecomponent to an earlier valid checkpoint and resuming execution at ahigher fidelity in response to a fidelity mismatch. Each of thesemethodologies will be described in greater detail hereafter.

As a further improvement, illustrative embodiments may further utilize apredictive mechanism for determining a priori what a fidelity value fora component should be during the simulation based on a history offidelity values. Specifically, the actual transaction run time fidelityin the simulation and the requested fidelity for a transaction aremonitored and adjustments to increase/decrease the fidelity of the modelin the simulation to match the requested fidelity are tracked. Trendvalues are calculated based on these tracked increase/decreases and thetrend values are used to determine when and by how much the fidelityvalue of a model of a component in the model of the computer system isto be modified so as to anticipate the fidelity value that will berequired by future transactions. This will avoid the performance impactof having to change the fidelity of model during simulation runtime bypredicting the needed fidelity prior to the need.

As will be appreciated by one skilled in the art, the present inventionmay be embodied as a system, method, or computer program product.Accordingly, aspects of the present invention may take the form of anentirely hardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,aspects of the present invention may take the form of a computer programproduct embodied in any one or more computer readable medium(s) havingcomputer usable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablemedium would include the following: an electrical connection having oneor more wires, a portable computer diskette, a hard disk, a randomaccess memory (RAM), a read-only memory (ROM), an erasable programmableread-only memory (EPROM or Flash memory), an optical fiber, a portablecompact disc read-only memory (CDROM), an optical storage device, amagnetic storage device, or any suitable combination of the foregoing.In the context of this document, a computer readable storage medium maybe any tangible medium that can contain or store a program for use by orin connection with an instruction execution system, apparatus, ordevice.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, in abaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Computer code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, radio frequency (RF), etc., or anysuitable combination thereof.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java™, Smalltalk™, C++, or the like, and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer, or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to the illustrativeembodiments of the invention. It will be understood that each block ofthe flowchart illustrations and/or block diagrams, and combinations ofblocks in the flowchart illustrations and/or block diagrams, can beimplemented by computer program instructions. These computer programinstructions may be provided to a processor of a general purposecomputer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, such that the instructions,which execute via the processor of the computer or other programmabledata processing apparatus, create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions thatimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus, or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The illustrative embodiments may be utilized in many different types ofdata processing environments including a distributed data processingenvironment, a single data processing device, or the like. In order toprovide a context for the description of the specific elements andfunctionality of the illustrative embodiments, FIGS. 1 and 2 areprovided hereafter as example environments in which aspects of theillustrative embodiments may be implemented. It should be appreciatedthat FIGS. 1-2 are only examples and are not intended to assert or implyany limitation with regard to the environments in which aspects orembodiments of the present invention may be implemented. Manymodifications to the depicted environments may be made without departingfrom the spirit and scope of the present invention.

With reference now to the figures, FIG. 1 depicts a pictorialrepresentation of an example distributed data processing system in whichaspects of the illustrative embodiments may be implemented. Distributeddata processing system 100 may include a network of computers in whichaspects of the illustrative embodiments may be implemented. Thedistributed data processing system 100 contains at least one network102, which is the medium used to provide communication links betweenvarious devices and computers connected together within distributed dataprocessing system 100. The network 102 may include connections, such aswire, wireless communication links, or fiber optic cables.

In the depicted example, server 104 and server 106 are connected tonetwork 102 along with storage unit 108. In addition, clients 110, 112,and 114 are also connected to network 102. These clients 110, 112, and114 may be, for example, personal computers, network computers, or thelike. In the depicted example, server 104 provides data, such as bootfiles, operating system images, and applications to the clients 110,112, and 114. Clients 110, 112, and 114 are clients to server 104 in thedepicted example. Distributed data processing system 100 may includeadditional servers, clients, and other devices not shown.

In the depicted example, distributed data processing system 100 is theInternet with network 102 representing a worldwide collection ofnetworks and gateways that use the Transmission ControlProtocol/Internet Protocol (TCP/IP) suite of protocols to communicatewith one another. At the heart of the Internet is a backbone ofhigh-speed data communication lines between major nodes or hostcomputers, consisting of thousands of commercial, governmental,educational and other computer systems that route data and messages. Ofcourse, the distributed data processing system 100 may also beimplemented to include a number of different types of networks, such asfor example, an intranet, a local area network (LAN), a wide areanetwork (WAN), or the like. As stated above, FIG. 1 is intended as anexample, not as an architectural limitation for different embodiments ofthe present invention, and therefore, the particular elements shown inFIG. 1 should not be considered limiting with regard to the environmentsin which the illustrative embodiments of the present invention may beimplemented.

With reference now to FIG. 2, a block diagram of an example dataprocessing system is shown in which aspects of the illustrativeembodiments may be implemented. Data processing system 200 is an exampleof a computer, such as client 110 in FIG. 1, in which computer usablecode or instructions implementing the processes for illustrativeembodiments of the present invention may be located.

In the depicted example, data processing system 200 employs a hubarchitecture including north bridge and memory controller hub (NB/MCH)202 and south bridge and input/output (I/O) controller hub (SB/ICH) 204.Processing unit 206, main memory 208, and graphics processor 210 areconnected to NB/MCH 202. Graphics processor 210 may be connected toNB/MCH 202 through an accelerated graphics port (AGP).

In the depicted example, local area network (LAN) adapter 212 connectsto SB/ICH 204. Audio adapter 216, keyboard and mouse adapter 220, modem222, read only memory (ROM) 224, hard disk drive (HDD) 226, CD-ROM drive230, universal serial bus (USB) ports and other communication ports 232,and PCI/PCIe devices 234 connect to SB/ICH 204 through bus 238 and bus240. PCI/PCIe devices may include, for example, Ethernet adapters,add-in cards, and PC cards for notebook computers. PCI uses a card buscontroller, while PCIe does not. ROM 224 may be, for example, a flashbasic input/output system (BIOS).

HDD 226 and CD-ROM drive 230 connect to SB/ICH 204 through bus 240. HDD226 and CD-ROM drive 230 may use, for example, an integrated driveelectronics (IDE) or serial advanced technology attachment (SATA)interface. Super I/O (SIO) device 236 may be connected to SB/ICH 204.

An operating system runs on processing unit 206. The operating systemcoordinates and provides control of various components within the dataprocessing system 200 in FIG. 2. As a client, the operating system maybe a commercially available operating system such as Microsoft® Windows®XP (Microsoft and Windows are trademarks of Microsoft Corporation in theUnited States, other countries, or both). An object-oriented programmingsystem, such as the Java™ programming system, may run in conjunctionwith the operating system and provides calls to the operating systemfrom Java™ programs or applications executing on data processing system200 (Java is a trademark of Sun Microsystems, Inc. in the United States,other countries, or both).

As a server, data processing system 200 may be, for example, an IBM®eServer™ System P® computer system, running the Advanced InteractiveExecutive (AIX®) operating system or the LINUX® operating system(eServer, System p, and AIX are trademarks of International BusinessMachines Corporation in the United States, other countries, or bothwhile LINUX is a trademark of Linus Torvalds in the United States, othercountries, or both). Data processing system 200 may be a symmetricmultiprocessor (SMP) system including a plurality of processors inprocessing unit 206. Alternatively, a single processor system may beemployed.

Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as HDD 226, and may be loaded into main memory 208 for execution byprocessing unit 206. The processes for illustrative embodiments of thepresent invention may be performed by processing unit 206 using computerusable program code, which may be located in a memory such as, forexample, main memory 208, ROM 224, or in one or more peripheral devices226 and 230, for example.

A bus system, such as bus 238 or bus 240 as shown in FIG. 2, may becomprised of one or more buses. Of course, the bus system may beimplemented using any type of communication fabric or architecture thatprovides for a transfer of data between different components or devicesattached to the fabric or architecture. A communication unit, such asmodem 222 or network adapter 212 of FIG. 2, may include one or moredevices used to transmit and receive data. A memory may be, for example,main memory 208, ROM 224, or a cache such as found in NB/MCH 202 in FIG.2.

Those of ordinary skill in the art will appreciate that the hardware inFIGS. 1-2 may vary depending on the implementation. Other internalhardware or peripheral devices, such as flash memory, equivalentnon-volatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIGS. 1-2. Also, theprocesses of the illustrative embodiments may be applied to amultiprocessor data processing system, other than the SMP systemmentioned previously, without departing from the spirit and scope of thepresent invention.

Moreover, the data processing system 200 may take the form of any of anumber of different data processing systems including client computingdevices, server computing devices, a tablet computer, laptop computer,telephone or other communication device, a personal digital assistant(PDA), or the like. In some illustrative examples, data processingsystem 200 may be a portable computing device which is configured withflash memory to provide non-volatile memory for storing operating systemfiles and/or user-generated data, for example. Essentially, dataprocessing system 200 may be any known or later developed dataprocessing system without architectural limitation.

As mentioned above, the mechanisms of the illustrative embodiments aregenerally directed to simulation of complex computer systems. As such,this simulation may be performed either on a single computing device,such as a client computer device or a stand-alone computing device, orby a plurality of computing devices operating together. For example, aserver computing device, such as server 104 or 106 in FIG. 1, mayprovide the facilities to implement a simulation of a complex computersystem using the mechanisms of the illustrative embodiments, but withuser interaction being provided either directly at the server computingdevice or remotely via one or more client computing devices, such asclient computing devices 110-114, and one or more data networks, such asdata network 102. Moreover, multiple server computing devices may workin concert to achieve the simulation of the complex computer system andthus, various components of the simulation, as well as the illustrativeembodiments, may be distributed across a plurality of computing, or dataprocessing, devices/systems. For ease of explanation, however, it willbe assumed that the simulation mechanisms as well as the mechanisms ofthe illustrative embodiments are implemented in a single servercomputing device, with or without user interaction from one or moreclient computing devices.

The illustrative embodiments provide mechanisms for determining, foreach component of a model of a computing system, a fidelity measure forthe component. A component of a model of a computing system may comprisea sub-portion of the model of the computing system that is directed tomodeling an individual hardware and/or software component of thecomputing system. For example, a component may be a processor, a storagedevice, a bus, an application-specific accelerator card (such as anencryption co-processor or the like), power supply, voltage regulator, abaseboard management controller, service processor, programmable logicdevices, thermal sensors, other types of sensors, a service application,an operating system, or the like. The sub-portions may be individualcomponent models, routines for modeling the components, classes andmethods for modeling the components, or the like.

The fidelity of these components refers to the accuracy of the modelingof the component when compared to the actual operation of a realimplementation of the component. The fidelity may be measured as theprecision with which the component is modeled by the sub-portions of themodel of the computing system. Using a higher precision provides ahigher fidelity, in general. Thus, for example, the various models ofthe components may be set to have different fidelities by settingvarious precision settings of the models. For example, a model of onecomponent may be set to use double precision floating point values (moreprecise and higher fidelity, but slower to execute) while another modelof a component may be set to round to a nearest integer (less preciseand lower fidelity, but faster to execute), one could choose between a“behavioral” model that may be less precise and a “real” model that maybe more precise, one may choose between a simple model versus a complexmodel where fewer components or more components of the computer systemare modeled within the respective models, one could choose between athermal sensor responder providing a preprogrammed temperature valueversus a thermal sensor emulator that calculates temperature based onother factors in the simulation, or the like.

The illustrative embodiments provide a mechanism for assigning fidelityvalues to various components within a model of a computing system. Whenit said that the fidelity values are assigned to the components, what ismeant is that the corresponding model of the component is assigned afidelity value parameter which is used as a basis for setting an amountof precision with which the model of the component is executed. Theactual fidelity value may take many different forms depending on thedesired implementation. For example, a fidelity value may be one of a“high”, “medium”, or “low” value. Moreover, fidelity values may havenumeric values within a defined range of fidelity values. Based on thesefidelity values, the modeling system may determine what precisionparameters to pass to the models of the components to control theprecision of the models of the components. For example, if a model of acomponent is assigned a fidelity value of “high”, a precision parametermay be passed or set with regard to the model of the component thatinstructs the model of the component to use double precision floatingpoint values. If a model of a component is assigned a fidelity value of“low”, a precision parameter may be passed or set with regard to themodel of the component that instructs the model of the component to useinteger values.

With regard to the illustrative embodiments herein, a component centricfidelity engine is utilized that assigns fidelity values to models ofcomponents based on the designation of fidelity centers and the affinityof components of the computing system with these designated fidelitycenters. The models of components of the computing system, in the modelof the computing system, that are designated as fidelity centers areexecuted with a highest allowable fidelity, i.e. are assigned a highestpossible fidelity value. The fidelity centers may be determined eithermanually by a user and input to the modeling system for use inperforming the component centric methodology. Alternatively, anautomated mechanism may analyze the model of the computing system toidentify the components of the computing system, their interconnections,potential utilization, operational interaction between components, andthe like. The fidelity centers may be determined based on such analysis.For example, based on a number of connections between given componentsand other components, processor utilization by the component, number oftransactions to/from the component, or the like, certain componentshaving high measures of these values, e.g., values above a predeterminedthreshold or thresholds, may be determined to be fidelity centers. Theautomated mechanisms may be used along with user input in someillustrative embodiments such that the automated mechanisms provide arecommendation for fidelity centers while allowing a user to overridesuch recommendations and either select additional components as fidelitycenters, removed components as fidelity centers, and the like.

Once one or more fidelity centers for a model of a computer system aredefined, a highest fidelity value is associated with these components,or the models of these components. Other components of the model of thecomputer system are assigned fidelity values based on their affinity tothe one or more fidelity centers. Components having a higher affinity tothe fidelity centers are assigned a relatively higher fidelity valuethan components that have a lower affinity to the fidelity centers. Theaffinity to a fidelity center describes the relative “closeness” of acomponent to another component that is a fidelity center. “Closeness”may be measured both in terms of physical closeness (e.g., direct orindirect physical links between the components, lengths of suchconnections, etc.) as well as logical closeness (e.g., numbers oftransactions between the components, etc.). The affinity itself may bedetermined by any suitable method including, but not limited to, methodsthat operated based on determining the affinity based on connectivity tofidelity centers or to other models with high affinity to fidelitycenters, based on type or number of transactions with fidelity centersor to other models with high affinity to the fidelity centers, based onuser specification of affinity, or any other suitable method.

Based on the fidelity values of the various models of components withinthe model of the computing system, the modeling system is used by asimulation engine to simulate the operation of the computing system. Inusing the modeling system, parameters or settings are set for thevarious models of components based on the fidelity values associatedwith them. For example, a parameter or setting may be set to indicatethat double precision floating point values are to be utilized for thefidelity centers, a parameter or setting may be set to indicate thatsingle precision floating point values are to be used for components ina next closest portion of the model to the fidelity centers, and integervalues are to be used for components further out from the fidelitycenters with regard to affinity. As a result, those components that arenot deemed to be as critical to the accuracy of the overall simulationare given lower fidelity and precision settings so that the increasedperformance when modeling these components adds to the performance ofthe overall simulation. Those components that are deemed to be morecritical to the overall accuracy of the simulation, i.e. thosecomponents that are fidelity centers or have a high affinity to thefidelity centers, are given a higher fidelity and precision setting sothat they may detract from the overall performance of the simulation,but greatly increase the accuracy of the overall simulation. The loss inperformance due to the increased fidelity and precision of thesefidelity centers and high affinity components may be at least partiallycompensated for by the increased performance of the modeling of theother components as mentioned above.

In order to use the component centric methodology for assigning fidelityvalues to components of a model of a computer system, a representationof the model of the computer system is first generated. In oneillustrative embodiment, this representation of the model of thecomputer system comprises a mesh of nodes and links between nodes, whereeach node represents a component in the model of the computer system,i.e. each node is a model of a component or a sub-portion of the modelof the computer system directed to modeling a particular component ofthe computer system. The links between nodes in the mesh. represent theconnections between components, e.g., relationships, interactions,physical connects, etc.

FIG. 3A illustrates an example block diagram of a computing system inaccordance with one illustrative embodiment. The example shown in FIG.3A is for a high end server computing system, but the mechanisms of theillustrative embodiments may be used with any type of computing system.The existence and connections between components of the computing systemmay be automatically discovered or identified by analyzing the model ofthe computer system and identifying portions of the model of thecomputer system directed to each separate component of the computersystem, for example. Alternatively, a user may specify the componentsand their connections or a combination of the automated and manualprocess for specifying the computer system components and connectionsmay be utilized. As further examples of component identificationmethodologies, a simulation may be arbitrarily componentized based onresource consumption of the component (memory, disk, program size of thesimulation) or a simulated system may be componentized based on theplugability of its real hardware counterparts. In other words, if thereal hardware can be plugged into a slot or a socket, then it would beconsidered a component.

FIG. 3B is an example diagram of a nodal mesh representation of thecomputer system shown in FIG. 3A which may be used as a basis forassigning fidelity values in accordance with one illustrativeembodiment. The nodal mesh 300 of FIG. 3B may be generated by analyzingthe discovered components and their links in FIG. 3A and generating thenodal mesh with nodes representing each component and links betweennodes representing the connections between the components.

Based on this nodal mesh 300, certain ones of the nodes may be selectedas fidelity centers. As mentioned above, the selection of nodes, orcomponents, as fidelity centers may be performed through an automatedanalysis of the nodal mesh 300, a manual user specification of thefidelity centers, or a combination of automated and manual processes foridentifying certain ones of the nodes as fidelity centers. At least onefidelity center must be specified for the component centric methodologyto be utilized in assigning fidelity values to nodes of the nodal mesh300.

As shown in FIG. 3B, in the depicted example, node 310, corresponding tothe flexible service processor (FSP), has been determined to be afidelity center. Node 310 may have been selected by an automatedprocess, a manual process, or a combination of automated process andmanual process, as mentioned above. For example, the FSP node 310 mayhave been selected because of a number of transactions between the FSPnode 310 and the power management node 320, processors 330-340, and theI/O hub 350. That is, the FSP node 310 may be very active in theoperation of the overall computer system and thus, may have beenselected as a fidelity center since accuracy of its modeling willgreatly affect the accuracy of the overall simulation of the computersystem represented by the nodal mesh 300. As a result, node 310 is givena highest possible fidelity value and the simulation of node 310 will beexecuted with a highest precision.

Once at least one fidelity center is selected, such as node 310, theremaining nodes in the nodal mesh 300 are assigned fidelity values basedon their affinity to the fidelity centers, e.g., node 310. FIG. 3Cillustrates one example way in which fidelity values may be assigned tonodes in nodal mesh 300 in accordance with one illustrative embodiment.

As shown in FIG. 3C, three concentric circles 360-380 are generated withthe fidelity center node 310 being at the center of these concentriccircles 360-380. The nodes within the inner most circle 360 representfidelity centers. In this case, there is only one fidelity center node310 but other sets of concentric circles may be utilized for otherfidelity centers should more than one fidelity center be identified.Nodes within the next outer circle 370 represent nodes that have a highaffinity to the fidelity center nodes in circle 360. Nodes in the outermost circle 380 represent nodes that have a relatively low affinity tothe fidelity center nodes in circle 360. These affinities, as mentionedabove, may be determined based on a number of factors including bothphysical and logical connections between the components represented bythe nodes and the fidelity center components.

It should be appreciated that the various zones represented by circlesin FIG. 3C are only examples and the illustrative embodiments are notlimited to the particular number of zones (or circles) or the particularconfiguration of the zones shown in FIG. 3C. Any number of zones andconfigurations of zones may be used without departing from the spiritand scope of the illustrative embodiments.

For ease of explanation, in the depicted example, affinity is based onlyon direct/indirect connection of components with the fidelity center,i.e. the FSP component. As can be seen in FIG. 3A, the CPUs, MemoryBuffers, Power Management, and I/O hub components have directconnections to the FSP while other components have an indirectconnection, i.e. they are connected to the FSP through other components.As a result, in the depicted example, the CPUs, Memory Buffers, PowerManagement, and I/O hub components have a high affinity with thefidelity center FSP node 310, whereas the remaining I/O adapter, voltageregulator module (VRM), and dual in-line memory module (DIMM) nodes havea relatively low affinity with the fidelity center FSP node 310.

The information regarding affinity may be obtained from an analysis ofthe model of the computer system to identify which components aredirectly connected to each other and which components are indirectlyconnected to each other. Similar analysis could be done for logicalconnections in another embodiment in which both physical and logicalaffinity are considered. A weighting algorithm may be used to weight thelinks between components or nodes in the nodal mesh 300 according to anyof a number of different factors for the purposes of determiningaffinity between nodes. For example, higher weights can be given tolinks between processor type components and bus or hub components, lowerweights can be given to memory components, or the like. Weights may alsobe assigned to links based on activity, transaction type, link type, orthe like. Thus, based on the weighting, some nodes that would otherwisebe considered to have a high affinity, may in fact have a loweraffinity, e.g., not all connections to CPUs may be weighted the same andthus, some CPUs may be in a relatively high affinity region of the nodalmesh 300 whereas others are in a medium or even low affinity region ofthe nodal mesh 300.

As a result of this analysis, the mapping of fidelity values as shown inFIG. 3D is determined. A “high” fidelity value may be assigned to anynodes within the circle 360, i.e. the FSP node 310, a “medium” fidelityvalue may be assigned to nodes in the circle 370, i.e. CPU, MemoryBuffer, Power Management, and I/O hub nodes, and a “low” fidelity valuemay be assigned to nodes in the circle 380, i.e. the I/O adapter, VRM,and DIMM nodes. These fidelity values may then be used to set parametersor setting values for specifying the precision at which the simulationof the corresponding components, using the models of these components,is performed.

The above methodology for assigning fidelity values using the componentcentric approach may be performed at various times during the simulationof the computer system using the model of the computer system. Forexample, fidelity processing and assignment such as that described abovemay be performed when the simulation of the computer system starts, whena concurrent maintenance event occurs, e.g., a configuration change tothe computer system such as a hot plugging of a component, removal of acomponent, or the like, the fidelity of a fidelity center changes due touser interaction or the like, at a user defined point in time during thesimulation, or at other event-based or user defined times during thesimulation of the computer system.

It should be appreciated that the example above only shows one fidelitycenter but in actuality, a plurality of fidelity centers may be definedin a model of a computer system. As a result, some components of thecomputer system will have greater affinities to one fidelity center andlower affinities to another fidelity center, with overlaps between thesemeasures of affinity between the different fidelity centers. Theweighting algorithm discussed above may be utilized to determine a finalfidelity value to be assigned to a node that is present in overlappingregions of affinity between two or more fidelity centers by weightingthe different connections differently and then using any suitable logicto determine what the final affinity and fidelity measure should be forthe node. For example, an average of the affinities may be generated andused as a basis for determining the fidelity value to assign to thenode. Other functions can be used to determine the final fidelity valuein accordance with the particular implementation desired. Such functionsmay be statistical functions or other mathematical functions forderiving a single fidelity value from the various affinities of thenode. Alternatively, a user may be informed of this situation andrequested to select or enter an affinity for the node upon which thefidelity value may be based. Any suitable function or manner forspecifying the affinity of a node when the node has affinities tomultiple fidelity centers may be used without departing from the spiritand scope of the illustrative embodiments.

Thus, the illustrative embodiments provide mechanisms for assigningfidelity values to components of a computer system being simulated usinga model of the computer system. The mechanisms use a component centricmethodology to assign these fidelity values. The component centricmethodology involves defining fidelity centers as having a highestfidelity value, and then assigning lower fidelity values to othercomponents of the computer system based on their affinity to the definedfidelity centers. In this way, a balance between precision of thesimulation of the computer system and performance of the simulation ofthe computer system is achieved by assigning higher fidelities to themore critical components of the model of the computer system and lowerfidelities to the less critical components of the model of the computersystem.

FIG. 4 is an example block diagram of the primary operational componentsof a simulation engine in accordance with one illustrative embodiment.The simulation engine 400 in FIG. 4 may be implemented in hardware,software, or any combination of hardware and software in one or morecomputing devices. For example, in one illustrative embodiment, thesimulation engine 400 is implemented as software instructions executingon one or more processors of a server computing device, such as server104 or 106 in FIG. 1.

As shown in FIG. 4, the simulation engine 400 comprises a controller410, simulation logic 420, user/client device interface 430, computersystem model database 440, fidelity assignment engine 450, fidelityassignment database 460, dynamic fidelity modification engine 470,optimal simulation fidelity prediction engine 480, and resultsgeneration, storage, and presentation engine 490. The controller 410comprises logic for controlling the overall operation of the simulationengine 400 and orchestrates the operation and interaction of the otherelements 420-490. The simulation logic 420 controls and performs theactual execution of the simulation of the computer system using thecomputer system model database 440. The computer system model database440 stores the model of the computer system including any sub-portions,or models, of the individual components of the computer system. Forexample, the model of the computer system may be comprised ofinstantiations of classes, i.e. objects, representing the variouscomponents of the computer system and the simulation logic 420 mayexecute a simulation of the computer system using the objects in thecomputer system model database 440.

The simulation logic 420 may execute the simulation of the computersystem using the model in the database 440 based on fidelity valuesassociated with the various components in the model of the computersystem as determined by the mechanisms of the illustrative embodiments.For example, the fidelity assignment engine 450 may analyze the model ofthe computer system in the database 440 and determine the physicaland/or logical connections between the components of the computer systemin the model, such as shown in FIG. 3A above. The fidelity assignmentengine 450 may then generate a representation of the components andtheir physical/logical connections, such as the nodal mesh shown in FIG.3B above, for example. This information may be stored in a computersystem representation data structure 455 for continued use by thefidelity assignment engine 450 so that the representations need not beregenerated each time a change in fidelity assignments is determined tobe necessary.

Having generated a representation of the components and theirphysical/logical connections in the computer system, the fidelityassignment engine 450 identifies fidelity centers within therepresentation. The determination of fidelity centers may be performedautomatically using analysis of the representation, e.g., componentshaving a number of physical/logical connections greater than apredetermined threshold may be considered fidelity centers, componentshaving direct physical/logical connections may be considered fidelitycenters, or the like. In addition, or alternatively, user input may bereceived, either directly or via client computing devices, throughuser/client device interface 430, for specifying fidelity centers.

Once one or more fidelity centers are defined, the fidelity assignmentengine 450 may assign fidelity values to the other components of themodel of the computer system using a component centric methodology asdescribed above. The resulting fidelity values assigned to the variouscomponents may then be stored in a fidelity assignment database 460 foruse by the simulation logic 420 in determining how to execute thevarious sub-portions of the computer system model 440, associated withthe components of the computer system, to achieve a balance betweenfidelity and performance of the simulation. The results of thesimulation may be compiled by the results engine 490, stored, and/orpresented to a user via the user/client interface 430.

The dynamic fidelity modification engine 470 and optimal simulationfidelity prediction engine 480 provide logic for performing additionalfunctionality provided by the mechanisms of the illustrativeembodiments. As will be described in greater detail hereafter, thedynamic fidelity modification engine 470 may operate to perform one ormore different methodologies for dynamically adjusting fidelity valuesof components of the model of the computer system. Moreover, the optimalsimulation fidelity prediction engine 480 may be used to look at trendinformation for changes in fidelity values of components to predict thedynamic updates to fidelity values for components of the model of thecomputer system during simulation of the computer system. Theseadditional mechanisms will be described in greater detail hereafter.

Each of these additional mechanisms may utilize the fidelity assignmentengine 450 as a basis for defining an initial set of fidelity values tothe components of the model of the computer system with dynamicmodifications thereafter. FIG. 5 is a flowchart outlining an exampleoperation for performing this fidelity assignment in accordance with oneillustrative embodiment. The operation outlined in FIG. 5 may beperformed, for example, by the fidelity assignment engine 450 in FIG. 4or other type of hardware and/or software logic for performing fidelityassignments.

As shown in FIG. 5, the operation starts with receiving a model of acomputer system that is to be used for simulating the computer system(step 510). The model of the computer system includes sub-portions orindividual models of individual components of the computer system. Arepresentation of the plurality of individual components of the computersystem is generated based on at least one of physical or logicalconnections between the individual components (step 520). One or morefidelity centers are then identified based on the representation of thecomponents (step 530). Fidelity values are then assigned to othercomponents in the model of the computer system based on their affinityto the fidelity center(s) (step 540). This information is then stored(step 550) and a simulation of the computer system is performed usingthe model of the computer system and the associated fidelity values ofthe various components of the model of the computer system (step 560).Results of the simulation are stored and optionally presented to a userfor use in determining how the computer system will operate (step 570).The operation then terminates.

It should be noted that while the above illustrative embodiments aredescribed in terms of setting a fidelity value for the particular modelsof the components within the model of the computer system, the inventionis not limited to such. Rather, any other mechanism for specifying orsetting the fidelity of a model of a component may be used withoutdeparting from the spirit and scope of the illustrative embodiments. Forexample, in some illustrative embodiments, each component of thecomputer system may have more than one model of that component that maybe utilized depending upon the fidelity value associated with thecomponent. As an example, a FSP may have a first model for a “low”fidelity value that uses integer values to simulate the FSP, a secondmodel for a “medium” fidelity value that uses single precision floatingpoint values to simulate the FSP, and a third model for a “high”fidelity value that uses double precision floating point values tosimulate the FSP. Based on the fidelity value assigned to the FSPcomponent using the mechanisms described above, the particularcorresponding model may be selected and enabled for use in thesimulation. The use of multiple models and the selection of anappropriate model may be further used for dynamic adjustment of thefidelity values of the components of the computer system as will bedescribed in greater detail hereafter.

As mentioned above, in addition to the mechanisms for assigning fidelityvalues to components of a model of a computer system based on affinitiesbetween these components and fidelity centers, additional mechanisms areprovided for dynamically modifying these fidelity values as thesimulation progresses. In this way, the simulation may be fine tuned soas to achieve a highest possible performance while maintaining arequired level of fidelity or accuracy. As mentioned above, this dynamicdetermination and changing of fidelity values may be achieved in anumber of different ways including using a transaction centricmethodology, an activity centric methodology, and/or a correctionmethodology.

With the transaction centric methodology, it is assumed that thesimulation of the computer system using the model of the computer systemis comprised of a plurality of components, connections betweencomponents, and transactions between components. A transaction is aninteraction, such as a transfer of data, communication or the like,between components of a computer system in the model of the computersystem. In the transaction centric methodology, transactions areassigned, by the sender component for the transaction, i.e. theinitiator of the transaction, a required fidelity level of the receivercomponent that is to receive the transaction, i.e. the target of thetransaction sent by the sender component. The particular requiredfidelity level that is assigned to the transaction may be specifiedaccording to a predetermined listing of transaction types andcorresponding require fidelity levels. For example, one might want tohave I/O transactions have a higher fidelity than heartbeattransactions, for example. The particular required fidelity levels thatare to be assigned to different types of transactions may be userconfigurable so as to emphasize different types of transactions overothers with regard to fidelity of the simulation.

When a sender component, during the simulation, attempts to send atransaction to a receiver component, the sender component associates arequired fidelity level with the transaction based on the specifiedlisting of transaction types and their associated required fidelitylevels. If a specific required fidelity level is not assigned to thisparticular transaction type, then a default required fidelity level maybe utilized, e.g., a lowest required fidelity level may be used as adefault. Upon receiving a transaction during the simulation, thereceiver component in the model of the computer system modifies its ownfidelity value to match the required fidelity level if necessary. Thismay involve setting a value to cause the precision of the model of thereceiver component to be changed, swapping in another model of thereceiver component that is designed for the specified required fidelitylevel, or the like.

Such modification of the model of the receiver component may beperformed, for example, in response to the required fidelity level beinghigher than a current fidelity value of the model of the receivercomponent, e.g., the model of the receiver component is designed or setfor a “medium” fidelity value whereas the required fidelity level of thetransaction is a “high” fidelity. In an alternative embodiment, suchmodification may be performed whenever the current fidelity valuesetting of the model of the receiver component does not exactly matchthe required fidelity level of the transaction such that the fidelityvalue of the model of the receiver component can be reduced when thetransaction does not require a higher fidelity value setting. Forpurposes of the following description, it will be assumed that changesto the model of the receiver component are performed only in response tothe required fidelity level of a transaction being higher than thecurrent fidelity value of the model of the receiver component.

In order to specify the required fidelity level of the transaction, eachtransaction includes a marking indicator of the fidelity level of thetransaction which may be set to a specific value by the sender componentin the simulation. The setting of the value for this required fidelitylevel marking indicator may be determined based on one or more listingsof transaction types and associated required fidelity levels. Forexample, in one illustrative embodiment, the sender component may haveits own associated local required fidelity level listing that is used bythe sender component for transactions sent by the sender component.Other sender components may have their own separate local requiredfidelity level listings that they may use when sending transactions. Inaddition, or alternatively, a global required fidelity level listing maybe provided for use with transactions from all sender components. In oneillustrative embodiment, this global required fidelity level listing maybe used to set the required fidelity level marking indicator when notspecifically overridden by a local required fidelity level listing forthe same transaction type. Moreover, a default required fidelity levelmay be established such that any transaction types not having a specificentry in one of the local or global listings may have their requiredfidelity level marking indicator set to this default required fidelitylevel.

The listings of transaction types and corresponding required fidelitylevels may take many different forms. In one illustrative embodiment,the transaction types may be associated with a type of action that isbeing requested as part of the transaction. For example, a transactionmay have a type of “I/O transaction,” “Memory transaction,” “managementtransaction,” or the like. Various required fidelity levels may beassigned based on the desired emphasis to be provided to transactions ofparticular types. These required fidelity levels may be specified byuser input and/or may be automatically determined based on othersettings of the simulation, e.g., a general setting of a desiredemphasis for the simulation or the like. The required fidelity levelsmay be specified as fidelity values as described previously so that theycan be compared to the fidelity values associated with models ofcomponents in the model of the computer system. For example, in oneillustrative embodiment, required fidelity levels may have values of“high,” “medium,” or “low,” similar to the fidelity values associatedwith the models of the components.

FIG. 6 is an example diagram to illustrate the transaction centricmethodology for dynamically adjusting the fidelity value of a model of acomponent in accordance with one illustrative embodiment. The operationsillustrated in FIG. 6 may be performed, for example, by the dynamicfidelity modification engine 470 in FIG. 4, by a combination of thedynamic fidelity modification engine 470 and the simulation logic 420,or the like.

As shown in FIG. 6, a sender component 610 may, during the simulation ofthe computer system using the model of the computer system, whichincludes models of the components 610 and 620, may attempt to send atransaction 630 to a receiver component 620. The transaction includes amarking indicator 640 that indicates a required fidelity level for thetransaction 630. This marking indicator 640 is set by the sendercomponent 610 based on one or more of the local required fidelity levellisting data structure 615, the global required fidelity level listingdata structure 617, and/or a default required fidelity level 619.

The receiver component 620 has an associated fidelity value 625 againstwhich the required fidelity level specified in the marking indicator 640of the transaction 630 is compared. If there is a match or the fidelityvalue 625 is higher than the required fidelity level specified in themarking indicator 640, then no modification to the receiver component620 is needed. However, if there is not a match or the fidelity value625 is lower than the required fidelity level specified in the markingindicator 650, then the fidelity value 625 of the receiver component 620is modified to match the required fidelity level specified in themarking indicator 640 or another model 660 of the receiver component 620that provides the required fidelity level is swapped in to replace theoriginal receiver component 620. As mentioned above, in someillustrative embodiments, by changing a fidelity value associated with acomponent, the precision with which the model of the component isexecuted during the simulation may be modified. This swapping in orsetting of the fidelity value of the receiver component may be repeatedwith each transaction from each possible sender component in the modelof the computer system such that multiple swaps of values/models may beperformed during the course of a simulation.

FIG. 7 is a flowchart outlining an example operation of a sendercomponent when using the transaction centric methodology for dynamicadjustment of fidelity values in accordance with one illustrativeembodiment. The operations described in FIGS. 7-8 are performed within asimulation of a computer system. Thus, where it is stated that a“transaction is generated,” “a receiver component compares,” and thelike, this is intended to mean that within the simulation suchoperations are being virtually performed by the simulation logic usingthe models and other mechanisms of the simulation engine 400 in FIG. 4.

As shown in FIG. 7, the operation starts with the generation of atransaction by a sender component for transmission to a receivercomponent (step 710). A determination is made as to whether a localrequired fidelity level listing for the sender component has an entrycorresponding to the transaction type of the generated transaction (step720). If not, then a determination is made as to whether a globalrequired fidelity level listing has an entry corresponding to thetransaction type (step 730). If not, a default required fidelity levelis selected (step 740). Thereafter, or if either of steps 720 or 730result in an affirmative outcome, the marking indicator of thetransaction is set to a value corresponding to a required fidelity levelspecified for the transaction type in the corresponding listing (step750). The transaction is then transmitted to the receiver component(step 760) and the operation terminates.

FIG. 8 is a flowchart outlining an example operation of a receivercomponent when using the transaction centric methodology for dynamicadjustment of fidelity values in accordance with one illustrativeembodiment. As shown in FIG. 8, the operation starts with receiving atransaction from a sender component (step 810). The marking indicator ofthe required fidelity level is extracted (step 820) and compared againstthe current fidelity value of the current model of the receivercomponent (step 830). A determination is made as to whether the currentfidelity value of the current model of the receiver component issufficient for the required fidelity level (step 840). If not, then thefidelity value for the receiver component is modified to match therequired fidelity level or a model of the receiver component, associatedwith a fidelity value corresponding to the required fidelity level ofthe transaction, is swapped in to the simulation (step 850). Thereafter,or if the current fidelity value is sufficient for the required fidelitylevel, the transaction is executed (step 860) and the operationterminates.

In addition to, or alternative to, the transaction centric methodologyfor dynamically updating the fidelity values of models of componentswithin a model of a computer system, the illustrative embodiments mayfurther utilize an activity centric methodology for dynamically updatingfidelity values based on the changes in activity level of the variouscomponents of the computer system throughout the simulation. That is,the activity centric methodology uses the component activity level todetermine when it is appropriate to lower fidelity values of models ofcomponents. As activity drops down, the model of the component may haveits fidelity value reduced or may be interchanged for a lower fidelitymodel of the component. This will cause an increase in performance ofthe simulation while having minimal impact on the fidelity of theoverall simulation since the component is not being highly utilized inthe simulation.

Activity is defined as the incoming and/or outgoing service requests ortransactions by other components to the current component or from thecurrent component to other components. For example, activity of acomponent may be measured as a total number of transactions sent and/orreceived during a predetermined period of time prior to the current timeof the simulation. A lack of activity represents the idea that theparticular component is in an idle loop and is not being utilized in thesimulation. The mechanisms of the illustrative embodiments may detectwhen components go into an idle loop, or when components activity levelsare reduced significantly enough to warrant reduction of their fidelityvalues.

This activity measure may be compared against one or more thresholds todetermine if the activity level of the component is such that reductionin fidelity of the model of the component is warranted. For example, acomparison may be made against a first threshold to reduce a componentfrom a “high” fidelity value to a “medium” fidelity value and acomparison may be made against a second threshold to reduce thecomponent from a “medium” fidelity value to a “low” fidelity value. Inone illustrative embodiment, the mechanisms of the illustrativeembodiments simply detect when the activity level of a component iszero, i.e. no transactions are being processed by the component, suchthat the component is determined to be in an idle state.

The monitoring of component activity levels can be performed in a numberof different ways. In one illustrative embodiment, a counter may beassociated with each component that counts the number of transactionsprocessed by the component within a predetermined period of time, thecounter being reinitialized at the end of each predetermined period oftime. If the number of transactions is less than one or more thresholds,then a reduction in fidelity value for the component is determined to bedesirable.

In an alternative embodiment, a transaction flag value be associatedwith the component and may be set each time a transaction is processedby the component, if it is not already set. Periodically, such as whenan associated timer expires, a check may be made of the transaction flagvalue to determine if the component processed a transaction within theperiodic time. If the transaction flag value is not set, then a countermay be incremented and a comparison of the counter value to a thresholdmay be performed. If the counter value exceeds the threshold value, thenit is determined that the component has become idle and the fidelityvalue of the component may be reduced. If the transaction flag is set,then the component is not idle and the fidelity value is not changed bythe operation of the activity centric methodology. After this check, thetimer is reset and the transaction flag for the component is reset. Thecounter value may be reinitialized in response to a determination thatthe component has entered an idle state and the fidelity value isreduced.

FIG. 9 is a flowchart of an operation of a activity centric methodologyfor dynamically updating fidelity settings of a model of a component ina simulation of a computer system in accordance with one illustrativeembodiment. The operation outlined in FIG. 9 may be implemented, forexample, by the dynamic fidelity modification engine 470 in FIG. 4 inconcert with the simulation logic 420, computer system model database440, and/or other elements of the simulation system 400 in FIG. 4. Inparticular, the simulation logic 420 may maintain counters and timersfor determining activity levels of components, the simulation logic 420or the model database 440 may maintain transaction flag values for thecomponents for determining if a transaction has been handled by thecomponent within a predetermined period of time, and the like.

The operation outlined in FIG. 9 assumes that a mechanism is in placewhereby a transaction flag is associated with components of a model of acomputer system and the transaction flag is set in response to thecomponent processing a transaction. As shown in FIG. 9, the operationstarts with a resetting of the counter value for the component underconsideration (step 910), clearing a transaction flag value associatedwith the component (step 920), and resetting the timer associated withthe component (step 930). For purposes of this description, it will beassumed that the timer is associated with a single component, howeverthe operation may be repeated for each component in an embodiment wherethe timer is associated with the simulation of the computer system as awhole.

The simulation is permitted to continue running (step 940) and adetermination is made as to whether the timer associated with aparticular component has expired during the simulation of the computersystem (step 950). If the timer has not expired, the operation returnsto step 940. If the timer has expired, a determination is made as towhether a transaction flag of the component is set indicating atransaction was processed by the component during the time intervalmeasured by the timer (step 960). If the transaction flag has been set,then a counter value associated with the component is decremented (step970), and the operation returns to step 920.

If the transaction flag was not set, then the counter associated withthe component is incremented (step 980) and a determination is made asto whether the counter value is greater than or equal to a predeterminedthreshold (step 990). If not, then the operation returns to step 930. Ifthe counter value is greater than or equal to the predeterminedthreshold (step 990), then the fidelity value of the model of thecomponent is decreased or a model with a lower fidelity value is swappedin for the component (step 995). This operation may continue repeatedlyduring the course of the simulation and may be terminated upontermination of the simulation or upon the occurrence of another event,such as a user input specifying a command to discontinue the operationof the activity centric dynamic fidelity value modification methodology.

As yet another mechanism for dynamically changing the fidelity values ofcomponents during a simulation of a computer system, a correctivemethodology for selecting fidelity values for components may beprovided. With this corrective methodology, one or more of thecomponents in a simulation of a computer system may be instrumented sothat as the entire simulation proceeds in time, components within thecomputer system being simulated may speculatively increase or decreasethe fidelity values of the components based on actions within thecomponent. Based on specific behaviors of the components, the computersystem simulation may create a checkpoint of its total state and thenchange the fidelity of one or more components. A checkpoint comprisesthe total state of all the models, their current fidelity levels, anyinternal data, and any transactions pending, in progress, or justreceived. The checkpoint is essentially a “snapshot” of the entire modelof the computer system at a particular moment in time. Should an erroroccur, e.g., a missed prediction of fidelity requirements, thesimulation may be restored to the checkpointed state and select adifferent fidelity value or value(s) for the one or more components andresume the simulation. Checkpoints may only be created when the model ofthe computer system enters a checkpointable state, as defined by themodel's specific implementation, e.g., a state within a state machinethat quiesces or is in an “idle” state, no pending transactions arebeing received or sent, no processing is occurring within the model, orduring execution of an “idle” loop within a model.

A cost function may be used to calculate a cost associated with changingthe fidelity of the one or more components during the simulation so asto prevent “thrashing” between two fidelity levels. For example, thiscost function may look at how often the fidelity of the same componenthas changed within a predetermined time of the simulation, how oftenmore than one component has changed within a predetermined time of thesimulation, or the like, and associate costs to these situations todetermine if a change in fidelity is desirable or not based on the cost.

Checkpoints may be generated at predetermined increments in simulationtime. Each model of a component in the model of the computer system isresponsible for implementing its own checkpoint methodology but all ofthe models share a common application program interface (API) thatincludes the ability to create a checkpoint, load/store internal statedata for the model, change the fidelity value of the model of thecomponent, determine if the mode is in a checkpointable state, determinethat a fidelity mismatch has occurred, determine the current fidelityvalue of the model of the component, and determine a minimum fidelityvalue required to continue execution.

A model of a component may indicate to the simulation logic 420, at anypoint during the simulation of the computer system, that a mismatch inthe fidelity of the model of the component has occurred. Such a mismatchin the fidelity of the model is indicative of a problem with theoperation of the computer system being simulated. For example, afidelity mismatch may occur when a transaction is sent to the componentand the component is not able to handle the particular transaction. A“mismatch” may be any functional error within the simulation of thecomputer system using the model of the computer system. For purposes ofthis description, it will be assumed that this error is due to amismatch between the necessary fidelity required to complete atransaction and the actual fidelity of the component processing thetransaction.

As shown in FIG. 10, which is a timeline view of checkpoints during anexample simulation in accordance with one illustrative embodiment, thesimulation proceeds with checkpoints being generated at regularlyscheduled times until a mismatch is encountered by a component of themodel of the computer system. In response to this mismatch, a checkpointmay be generated (shown in FIG. 10 as checkpoint C5) and a determinationis made as to whether the simulation should be restored to a previouslygenerated checkpoint based on the relative costs for restoring thesimulation to a previous checkpoint. That is, for each checkpoint thatis currently maintained in the simulation, a cost is calculated and alowest-cost valid checkpoint is selected. In the depicted example, thecheckpoint C4 is determined to be a lowest cost checkpoint to use forrestoring the state of the simulation of model of the computer system.For example, the checkpoint C4 may be determined to be a lowest costbased on the number of models of components that would need to bemodified to return to the state of the checkpoint C4. More complex costdeterminations may be used as a basis for selecting a checkpoint withoutdeparting from the spirit and scope of the illustrative embodiments.

Having selected the checkpoint C4 as the checkpoint to which to restorethe simulation of the computer system, the correction is performed toreturn the state of the various models of the components of the computersystem to the previous checkpointed state, including fidelity valuesettings or swapping in models of components that utilize the fidelityvalues specified in the checkpoint. Thereafter, a new checkpoint (C4′)is created based on this restored and more accurate model of thecomputer system and its state, and the simulation execution is continued(C7-C8 . . . ).

It should be noted that, depending upon the cost function used, thecurrently generated checkpoint C5 may be the lowest cost function but isinvalid since it is associated with the simulation time point where amismatch is detected. In such a case, the next lowest cost validcheckpoint may be selected. Checkpoints may include a valid bit that maybe set or reset in response to the checkpoint being determined to beinvalid. Alternatively, any maintained checkpoints that have asimulation timestamp prior to a simulation time at which the mismatchwas detected may be considered to be valid. Thus, a check of timestampsmay be used to determine validity of checkpoints.

As mentioned above, the selection of the checkpoint to which to restorethe state of the simulation is based on a calculated cost. The cost ofeach checkpoint may be simple or complicated depending upon theparticular implementation desired. The cost may simply refer to therelative age of a checkpoint or may be much more complicated, such asfor example taking into account a combination of multiple factors. Oneexample of a complex cost function that may be used may be as follows:

Cost=T*(current time−checkpoint time)+N*(Number of affectedcomponents)+M*(Number of mismatches in recent history)+R*(RestoreOperation Time/Resources)+E*(Degree of Allowed Error)

where T, N, M, R, and E are weighting values.

This process of correction based modification of fidelity values formodels of components based on checkpoints may be repeated many timeswithin a simulation, resulting in multiple branches of simulation witholder checkpoints being purged. For example, checkpoints older than apredetermined amount of time from a current simulation time may beautomatically purged or rendered invalid. As another example, thesimulation logic 420 or dynamic fidelity modification engine 470 may beconfigured to only maintain a predetermined number of prior checkpointswith all older checkpoints being automatically purged or renderedinvalid.

FIG. 11 is a flowchart outlining an operation for performing acorrective methodology for dynamically adjusting validity values ofmodels of components in accordance with one illustrative embodiment. Theoperation outlined in FIG. 11 may be performed, for example, by thedynamic fidelity modification engine 470 in FIG. 4 in concert with thesimulation logic 420, computer system model database 440, and/or otherelements of the simulation system 400 in FIG. 4.

As shown in FIG. 11, the operation starts during the simulation of acomputer system, by checking to see if there is a mismatch reported by acomponent of the computer system model (step 1110). If not, thesimulation execution is continued (step 1115). If a mismatch isdetected, then a checkpoint of the simulation of the computer system isgenerated (step 1120). Costs for restoring prior checkpoints aregenerated for each of the previous checkpoints maintained by thesimulation system (step 1125).

A lowest cost valid checkpoint is selected based on these costs (step1130) and a determination is made as to whether the lowest cost is lessthan a predetermined threshold (step 1135). This threshold is used as abasis for determining if the least cost alternative is still too costlyto warrant the restoration to the checkpoint or if an error ortermination of the simulation should be performed instead.

If the lowest cost valid checkpoint's cost is greater than thisthreshold, then a determination is made as to whether the simulationallows errors (step 1140). For example, if no valid checkpoint is found(i.e. no checkpoint has a cost lower than the threshold) the simulationmust either terminate or continue. If the simulation terminates, theexecution of the simulation to that point may or may not be valid. Ifthe simulation is allowed to continue, the execution of the simulationmay still derive some value depending on the type of simulation (e.g.,within the simulation, a given component may experience a fault, butother components may be unaffected and may possibly continue execution).Thus, one may determine whether to allow errors or not based on whetherthe error is likely to affect the simulation as a whole or is localizedand useful information can be obtained from continuing the simulationeven in the event of an error.

If errors are not allowed, then the simulation is terminated with anerror state notification (step 1145) and the operation ends. If errorsare allowed, then an error notification is generated (step 1150) and theoperation continues to step 1120.

If the cost of the lowest cost valid checkpoint is lower than thethreshold (step 1135), then the simulation is restored to the lowestcosts valid checkpoint state (step 1155). The fidelity value of themodels of components detecting a mismatch are then modified to afidelity value that is valid for resolving the mismatch (step 1160). Thesystem is then checkpointed (step 1165) and the operation returns tostep 1120 where the simulation continues using the restored and modifiedstate of the models of the components. This operation may be repeatedwith each detected mismatch during the simulation.

Thus, in addition to providing a mechanism for fidelity center basedassignment of fidelity values that achieves a balance between fidelityand performance, the mechanisms of the illustrative embodiments providedynamic means for adjusting the fidelity values of components of a modelof a computer system based on the dynamic operation of the simulation.This allows the simulation to be adjusted to achieve the most optimumperformance/fidelity tradeoff.

As a further improvement provided by the mechanisms of the illustrativeembodiments, the simulation engine further includes a mechanism forpredictively determining the fidelity value settings for components of amodel of a computer system based on a history of fidelity mismatches.For example, the optimal simulation fidelity prediction engine 480 inFIG. 4 may comprise logic for working with the transaction centricdynamic mechanisms described above. In particular this logic may monitorthe actual transaction runtime fidelity and the required fidelity andmay track increases/decreases in fidelity values based on whether areceiver component provides the required fidelity for the transaction ornot. Based on this information, a trend of fidelity values and changesin fidelity values for individual components of the model of thecomputer system may be generated. This trend information may be used toanticipate the fidelity value that should be provided by the receivercomponent in future transactions, thereby avoiding the performanceimpact of changing the fidelity value of the component during runtime ofthe simulation.

For example, during a simulation, transactions may be sent to acomponent requiring a high fidelity value but the component onlyprovides a medium fidelity value. In accordance with the transactioncentric methodology described above, the component's fidelity value maybe dynamically adjusted to the required fidelity value and the fact thatsuch a change had to be made may be logged in the simulation system 400on a per-component basis. Such a log entry may include informationregarding the component's fidelity value, the transaction's requiredfidelity value, the fact that the component's fidelity value needed tobe modified to achieve the required fidelity value, and the amount(positive or negative) by which the fidelity value had to be adjusted toprovide the required fidelity value. This information may be logged overa predetermined number of transactions and a trend may be generated forthe particular component.

Once enough log information is generated for determining a trend, thetrend may be used as a basis for setting a new fidelity value for thecomponent prior to the performance of a next transaction targeting thecomponent. The particular function used for determining the new fidelityvalue for the component may take many different forms and may be verysimple or very complex. In one illustrative embodiment, if, for acurrent transaction, it is determined that the component's fidelityvalue was less than required for the transaction, a first trendcalculation may be used that adds to the fidelity value of the model ofthe receiver component based on the trend. If it is determined that thecurrent transaction's required fidelity value is less than the fidelityvalue provided by the receiver component, then a second trendcalculation may be used to subtract from the fidelity value of the modelof the receiver component based on the trend. In this way, if thecomponent's fidelity value is too low, it may be increased to therebyincrease fidelity but reduce performance. If the component's fidelityvalue is too high, it may be decreased to thereby increase performanceand reduce fidelity.

In one example embodiment, the trend may be determined over a last Ntransactions handled by a receiver component, where N is some integervalue set depending upon the desired implementation. The loggedinformation for the last N transactions may be analyzed to determinethat the component's fidelity value is “y” and it was “x” units lessprecise than the required fidelity value for the transactions. In such acase, a first trend calculation may be that the fidelity value for themodel of the component may be set to a value equal to y+(2*x).Similarly, if the analysis of the logged information for the last Ntransactions results in a determination that the component's fidelityvalue is “y” and it was “x” units more precise than the requiredfidelity value for the transactions, then the component's fidelity valuemay be set to y-(2*x). It should be appreciated that the x value may bedetermined in many different ways including taking an average of thedifferences between actual and required fidelity values over the Nprevious transactions or taking any other statistical measure ofdifferences between actual and required fidelity values.

FIG. 12 is a flowchart outlining an example operation for using fidelityprediction to adjust the fidelity of a model of a component inaccordance with one illustrative embodiment. Such an operation may beperformed, for example, by the logic of the optimal simulation fidelityprediction engine 480 in FIG. 4 in conjunction with one or more of theother elements shown in FIG. 4.

The operation in FIG. 12 assumes that a number of transactions 1 to Ntargeting a particular receiver component have been executed during thesimulation of the computer system with logs of the actual and requiredfidelity values being generated. The operation then begins with thereceipt of a transaction targeting the same receiver component (step1210). A determination is made as to whether the fidelity value of thecomponent is sufficient for the required fidelity value of thetransaction (step 1220). If not, the component fidelity value isadjusted, using one or more of the methodologies previously describedabove (step 1230) and information regarding the fidelity value mismatchis logged (step 1240). Thereafter, or if the component's fidelity valueis sufficient, the transaction is executed (step 1250) and the state ofthe simulation is quiesced so that a predictive evaluation may beperformed (step 1260).

A trend calculation for the component is made (step 1270) and aprediction is made as to whether the trend indicates the fidelity valueof the component to be insufficient for processing a next transaction(1280). If the fidelity value of the component will be insufficient forprocessing the next transaction, then the fidelity value of thecomponent is set according to a trend calculation function to increasethe fidelity value based on the trend (step 1290). If the fidelity valueof the component is too precise for processing, i.e. is too high, then afidelity value of the component is set according to a trend calculationfunction to reduce the fidelity value based on the trend (step 1300).The operation then terminates.

Thus, in addition to the mechanisms for setting fidelity values based ona fidelity center methodology and the dynamic adjustment mechanisms fordynamically adjusting the fidelity values of components of a model of acomputer system, the illustrative embodiments further provide mechanismsfor predictively determining fidelity values based on historical trendsof mismatches in fidelity values provided and required fidelity valuesof transactions. This again helps to improve performance of thesimulation while providing a highest possible fidelity of thesimulation.

It should be appreciated that the various methodologies for dynamicmodification of fidelity values associated with models of components ina model of a computer system, as well as the methodology for fidelityprediction, may be used together in any combination. That is, two ormore of the dynamic modification methodologies may be used together todynamically update the fidelity values of models of the components inthe model of the computer system. These two or more dynamic modificationmethodologies may be used on conjunction with the fidelity centermethodologies for initially/periodically assigning fidelity valuespreviously described above. Moreover, these two or more dynamicmodification methodologies may be used in conjunction with the fidelityprediction mechanisms described above during simulation of the computersystem using the model of the computer system.

It should further be appreciated that while the illustrative embodimentsare described in terms of simulations of computer systems using modelsof computer systems and their components, the illustrative embodimentsare not limited to such. Rather, the mechanisms of the illustrativeembodiments may be utilized with simulations of any systems ofcomponents in which fidelities of components may be set and/ordynamically updated so as to achieve a balance between fidelity of thesimulation and performance of the simulation. Thus, rather thansimulating a computer system, the simulation may be of human resourcesbetween departments of an organization, simulations of organic systems,simulations of ecosystems, finite element or finite volume analysis,atmospheric modeling, structural analysis, or the like.

As noted above, it should be appreciated that the illustrativeembodiments may take the form of an entirely hardware embodiment, anentirely software embodiment or an embodiment containing both hardwareand software elements. In one example embodiment, the mechanisms of theillustrative embodiments are implemented in software or program code,which includes but is not limited to firmware, resident software,microcode, etc.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers. Network adapters mayalso be coupled to the system to enable the data processing system tobecome coupled to other data processing systems or remote printers orstorage devices through intervening private or public networks. Modems,cable modems and Ethernet cards are just a few of the currentlyavailable types of network adapters.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A method, in a data processing system comprising at least oneprocessor and at least one memory, for controlling a fidelity of asimulation of a system, comprising: receiving, by the data processingsystem, a model of the system, wherein the model of the system comprisesa plurality of individual components of the system; assigning, by thedata processing system, a component in the plurality of individualcomponents to be a fidelity center, wherein the fidelity center has ahighest possible associated fidelity value; assigning, by the dataprocessing system, a fidelity value to each other component in theplurality of individual components based on an affinity of the othercomponent to the fidelity center; and simulating, by the data processingsystem, the system based on assigned fidelity values to the componentsin the plurality of individual components.
 2. The method of claim 1,wherein the fidelity value assigned to a component indicates a precisionof a model of the component within the model of the system, and whereina higher fidelity value corresponds to a higher precision but lowerperformance model of the component.
 3. The method of claim 1, whereinthe fidelity value assigned to a component represents an accuracy of amodel of the component, within the model of the system, to an actualimplementation of the component, and wherein a higher fidelity valuecorresponds to a higher accuracy but lower performance model of thecomponent.
 4. The method of claim 1, wherein the system is a computersystem, and wherein the plurality of individual components comprises atleast one of hardware components of the computer system or softwarecomponents of the computer system.
 5. The method of claim 1, wherein atleast one first component within the plurality of individual componentsof the system has a different associated fidelity value from a fidelityvalue associated with at least one second component within the pluralityof individual components.
 6. The method of claim 1, wherein assigning acomponent in the plurality of individual components to be a fidelitycenter comprises receiving user input specifying a component in theplurality of individual components to be a fidelity center.
 7. Themethod of claim 1, wherein assigning a component in the plurality ofindividual components to be a fidelity center comprises analyzing themodel of the system and automatically selecting the component in theplurality of individual components to be the fidelity center based onresults of the analysis.
 8. The method of claim 7, wherein the componentin the plurality of individual components that is assigned to be afidelity center is selected based on at least one of a number ofconnections between the component and one or more other components inthe plurality of individual components, processor utilization by thecomponent when compared to processor utilization of the other componentsin the plurality of individual components, or a number of transactionsto or from the component when compared to a number of transactions to orfrom the other components in the plurality of individual components. 9.The method of claim 1, wherein assigning a fidelity value to each othercomponent in the plurality of individual components based on an affinityof the other component to the fidelity center comprises assigning higherfidelity values to components having a higher affinity to the fidelitycenter and lower fidelity values to components having a lower affinityto the fidelity center.
 10. The method of claim 1, wherein the affinityof the other components to the fidelity center is determined based on atleast one of a physical closeness of the other components to thefidelity center or a logical closeness of the other components to thefidelity center.
 11. The method of claim 1, wherein simulating thesystem based on assigned fidelity values to the components in theplurality of individual components comprises at least one of setting,for each component in the plurality of components, one or moreparameters of a corresponding model of the component to one or morevalues corresponding to the fidelity value assigned to the component tocontrol a precision by which the model of the component models anoperation of the component, or selecting, for each component in theplurality of components, a model, from a plurality of models associatedwith that component, corresponding to the fidelity value.
 12. The methodof claim 1, further comprising generating a representation of the modelof the system, wherein the representation of the model of the system isa mesh of nodes and links between nodes, wherein each node represents acomponent in the plurality of individual components, and wherein thelinks between nodes represent at least one of physical or logicalconnections between the nodes, and wherein each link between nodes inthe mesh of nodes has an associated weight value for weighting adetermination of affinity of nodes connected by the link.
 13. The methodof claim 12, wherein the links between nodes in the mesh of nodes areautomatically identified based on an analysis of the model of thesystem.
 14. The method of claim 12, wherein each link between nodes inthe mesh of nodes has an associated weight value for weighting adetermination of affinity of nodes connected by the link.
 15. The methodof claim 1, wherein assigning a fidelity value to each other componentin the plurality of individual components based on an affinity of theother component to the fidelity center comprises generating one or morezones of affinity centered around the fidelity center, and assigningfidelity values to components in the plurality of individual componentsbased on a corresponding zone in which the components are placed basedon their affinity to the fidelity center.
 16. The method of claim 1,wherein the method is implemented repeatedly during a simulation of thesystem.
 17. The method of claim 1, wherein the method is implemented inresponse to at least one of a start of the simulation of the system,when a concurrent maintenance event occurs during the simulation, or afidelity value associated with the fidelity center changes.
 18. Themethod of claim 1, further comprising assigning one or more additionalcomponents in the plurality of individual components to be additionalfidelity centers, wherein assigning a fidelity value to each othercomponent in the plurality of individual components based on an affinityof the other component to the fidelity center further comprisesgenerating a fidelity value for each component of the other componentsbased on a balance of affinities between the component and each of thefidelity centers.
 19. A computer program product comprising a computerreadable storage medium having a computer readable program storedtherein, wherein the computer readable program, when executed on acomputing device, causes the computing device to: receive a model of thesystem, wherein the model of the system comprises a plurality individualcomponents of the system; assign a component in the plurality ofindividual components to be a fidelity center, wherein the fidelitycenter has a highest possible associated fidelity value; assign afidelity value to each other component in the plurality of individualcomponents based on an affinity of the other component to the fidelitycenter; and simulate the system based on assigned fidelity values to thecomponents in the plurality of individual components.
 20. An apparatus,comprising: a processor; and a memory coupled to the processor, whereinthe memory comprises instructions which, when executed by the processor,cause the processor to: receive a model of the system, wherein the modelof the system comprises a plurality individual components of the system;assign a component in the plurality of individual components to be afidelity center, wherein the fidelity center has a highest possibleassociated fidelity value; assign a fidelity value to each othercomponent in the plurality of individual components based on an affinityof the other component to the fidelity center; and simulate the systembased on assigned fidelity values to the components in the plurality ofindividual components.